﻿using System;
using System.Windows;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.VisualBasic;


using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices; // For COMException
//using VBIDE_12 = Microsoft.Vbe.Interop;
using Office_12 = Microsoft.Office.Core;
using Excel_12 = Microsoft.Office.Interop.Excel;


namespace HREDU.Hoang_Tuan.Classes
{
    /// <summary>
    /// Summary description for CStaff.
    /// </summary>

    public class CNHANVIEN
    {
        private int _id_nhanvien;
        private int _id_loainv;                                     //Loại nhân viên
        private string _macbcc;                                     //Mã cán bộ - công chức
        private string _ten_khaisinh;                               //1.1.Họ và tên khai sinh:
        private string _gioitinh;                                   //1.2.Giới tính
        private string _ten_thuonggoi;                              //2.Họ và tên thường gọi:
        private int _id_chucvu_dang;                                //3.1.Chức vụ Đảng:
        private int _id_chucvu_cq;                                  //3.2.Chức vụ chính quyền:
        private int _id_chucvu_dt;                                  //3.3.Chức vụ đoàn thể:
        private System.DateTime _ngaysinh;                          //4.Sinh ngày
        private System.Int16 _id_noisinh;                           //5.Nơi sinh
        private System.Int16 _id_quequan;                           //6.Quê quán
        private string _diachi;                                     //7.Nơi ở hiện nay
        private int _id_dantoc;                                     //8.Dân tộc
        private int _id_tongiao;                                    //9.Tôn giáo
        private int _id_thanhphan;                                  //10.Thành phần gia đình xuất thân
        private string _nghenghieptruoc;                            //11.Nghề nghiệp bản thân trước khi tuyển dụng
        private System.DateTime _ngaytuyendung;                     //12.1.Ngày được tuyển dụng (Năm vào ngành)
        private string _coquantuyendung;                            //12.2. Cơ quan tuyển dụng
        private System.DateTime _ngayvaocoquan;                     //13.Ngày vào cơ quan hiện đang công tác
        private System.DateTime _ngaytgcm;                          //14.Ngày tham gia cách mạng
        private System.DateTime _ngayketnap;                        //15.Ngày vào Đảng Cộng sản Việt Nam
        private System.DateTime _ngaychinhthuc;                     //16.Ngày chính thức
        private System.DateTime _ngaytgtcctxh;                      //17.Ngày tham gia các tổ chức chính trị, xã hội
        private System.DateTime _ngaynhapngu;                       //18.1.Ngày nhập ngũ
        private System.DateTime _ngayxuatngu;                       //18.2.Ngày xuất ngũ
        private string _quanhamchucvucn;                            //18.3.Quân hàm, chức vụ cao nhất
        private int _namqhcv;                                       //18.4.Năm nhận Quân hàm, chức vụ cao nhất
        private int _id_hocvan;                                     //19.Trình độ học vấn
        private int _id_chuyenmon;                                  //20.Trình độ chuyên môn
        private int _id_hocham;                                     //21.Học hàm, học vị cao nhất
        private int _id_chinhtri;                                   //22.Trình độ lý luận chính trị
        private string _ngoaingu;                                   //23.Trình độ ngoại ngữ
        private string _tinhoc;                                     //24.Trình độ tin học
        private string _congtacchinh;                               //25.Công tác chính đang làm
        private int _id_danhhieu;                                   //27.1. Danh hiệu được phong
        private int _namdanhhieu;                                   //27.2. Năm được phong danh hiệu
        private string _sotruongct;                                 //28.1.Sở trường công tác
        private string _congvieclaunhat;                            //28.2. Công việc đã làm lâu nhất
        private int _id_suckhoe;                                    //31.1.Tình trạng sức khỏe
        private string _chieucao;                                   //31.2.Chiều cao
        private string _cannang;                                    //31.3.Cân nặng
        private int _id_nhommau;                                    //31.4.Nhóm máu
        private string _cmnd;                                       //32.1.Số chứng minh thư nhân dân
        private System.DateTime _ngaycap;                           //32.2.Ngày cấp CMND
        private string _coquancap;                                  //32.2.Cơ quan cấp CMND
        private int _id_thuongbinh;                                 //33.1.Thương binh loại
        private bool _giadinhlietsy;                                //33.2.Gia đình liệt sĩ
        private bool _giadinhcccm;                                  //33.3.Gia đình có công cách mạng
        //Hoan canh kinh te
        private string _luong;                                      //39.1.Lương (Lấy từ bảng lương?)
        private string _cacnguonkhac;                               //39.2.Các nguồn khác
        private string _nhao_1;                                     //39.3.1.Nhà ở: Được cấp, được thuê, loại nhà
        private float _dientich_1;                                  //39.3.2.Tổng diện tích sử dụng
        private string _nhao_2;                                     //39.4.1Nhà ở: Nhà tự mua, tự xây, loại nhà
        private float _dientich_2;                                  //39.4.2.Tổng diện tích sử dụng
        private string _dato_1;                                     //39.5.Đất ở: Đất được cấp
        private string _dato_2;                                     //39.6.Đất ở: Đất tự mua
        private string _datsxkd;                                    //39.7.Đất sản xuất, kinh doanh:
        //Thong tin khac cua SYLL
        private int _id_donvi;                                      //Cơ quan hiện đang công tác (Đơn vị công tác)
        private System.DateTime _namcbql;                           //40.Năm làm cán bộ quản lý
        private int _id_hedaotao;                                   //41.Hệ đào tạo
        private int _id_mondaotao;                                  //42.Môn đào tạo
        private bool _qlgiaoduc;                                    //43.Đã học quản lý giáo dục
        private bool _qlnhanuoc;                                    //44.Đã học quản lý nhà nước
        private float _hesopccv;                                    //45.Hệ số phục cấp chức vụ
        private string _ghichu;                                     //46.Ghi chú

        #region "Properties"

        /// <summary>
        /// Mã nhân viên
        /// </summary>
        /// <value>The <c>ID_NHANVIEN</c> column value.</value>
        public int ID_NHANVIEN
        {
            get { return _id_nhanvien; }
            set { _id_nhanvien = value; }
        }

        /// <summary>
        /// Loại nhân viên
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_LOAINV</c> column value.</value>
        public int ID_LOAINV
        {
            get{  return _id_loainv; }
            set{  _id_loainv = value; }
        }

        /// <summary>
        /// Mã cán bộ công chức
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>MACBCC</c> column value.</value>
        public string MACBCC
        {
            get { return _macbcc; }
            set { _macbcc = value; }
        }

        /// <summary>
        /// 1. Họ tên khai sinh
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>TEN_KHAISINH</c> column value.</value>
        public string TEN_KHAISINH
        {
            get { return _ten_khaisinh; }
            set { _ten_khaisinh = value; }
        }

        /// <summary>
        /// Giới tính
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>GIOITINH</c> column value.</value>
        public string GIOITINH
        {
            get { return _gioitinh; }
            set { _gioitinh = value; }
        }

        /// <summary>
        /// 2. Họ tên thường gọi
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>TEN_THUONGGOI</c> column value.</value>
        public string TEN_THUONGGOI
        {
            get { return _ten_thuonggoi; }
            set { _ten_thuonggoi = value; }
        }

        /// <summary>
        /// Chức vụ Đảng
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_CHUCVU_DANG</c> column value.</value>
        public int ID_CHUCVU_DANG
        {
            get { return _id_chucvu_dang; }
            set { _id_chucvu_dang = value; }
        }

        /// <summary>
        /// Chức vụ Chính quyền
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_CHUCVU_CQ</c> column value.</value>
        public int ID_CHUCVU_CQ
        {
            get { return _id_chucvu_cq; }
            set { _id_chucvu_cq = value; }
        }

        /// <summary>
        /// Chức vụ Đoàn thể.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_CHUCVU_DT</c> column value.</value>
        public int ID_CHUCVU_DT
        {
            get { return _id_chucvu_dt; }
            set { _id_chucvu_dt = value; }
        }

        /// <summary>
        /// Ngày sinh.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NGAYSINH</c> column value.</value>
        public System.DateTime NGAYSINH
        {
            get
            {
                return _ngaysinh;
            }
            set
            {

                _ngaysinh = value;
            }
        }

        /// <summary>
        /// Nơi sinh.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NOISINH</c> column value.</value>
        public System.Int16 NOISINH
        {
            get { return _id_noisinh; }
            set { _id_noisinh = value; }
        }

        /// <summary>
        /// Quê quán.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>QUEQUAN</c> column value.</value>
        public System.Int16 QUEQUAN
        {
            get { return _id_quequan; }
            set { _id_quequan = value; }
        }

        /// <summary>
        /// Nơi ở hiện tại.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>DIACHI</c> column value.</value>
        public string DIACHI
        {
            get { return _diachi; }
            set { _diachi = value; }
        }

        /// <summary>
        /// Dân tộc.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_DANTOC</c> column value.</value>
        public int ID_DANTOC
        {
            get
            {

                return _id_dantoc;
            }
            set
            {
                _id_dantoc = value;
            }
        }

        /// <summary>
        /// Tôn giáo.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_TONGIAO</c> column value.</value>
        public int ID_TONGIAO
        {
            get
            {

                return _id_tongiao;
            }
            set
            {

                _id_tongiao = value;
            }
        }

        /// <summary>
        /// Thành phần xuất thân gia đình.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_THANHPHAN</c> column value.</value>
        public int ID_THANHPHAN
        {
            get
            {
                return _id_thanhphan;
            }
            set
            {
                _id_thanhphan = value;
            }
        }

        /// <summary>
        /// Nghề nghiệp trước khi tuyển dụng.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NGHENGHIEPTRUOC</c> column value.</value>
        public string NGHENGHIEPTRUOC
        {
            get { return _nghenghieptruoc; }
            set { _nghenghieptruoc = value; }
        }

        /// <summary>
        /// 12.1 Ngày tuyển dụng.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NGAYTUYENDUNG</c> column value.</value>
        public System.DateTime NGAYTUYENDUNG
        {
            get
            {

                return _ngaytuyendung;
            }
            set
            {

                _ngaytuyendung = value;
            }
        }

        /// <summary>
        /// 12.2 Cơ quan tuyển dụng.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>COQUANTUYENDUNG</c> column value.</value>
        public string COQUANTUYENDUNG
        {
            get
            {
                return _coquantuyendung;
            }
            set
            {
                _coquantuyendung = value;
            }
        }


        /// <summary>
        /// Ngày vào cơ quan hiện đang công tác.
        /// This column is not nullable.
        /// </summary>
        /// <value>The <c>NGAYVAOCOQUAN</c> column value.</value>
        public System.DateTime NGAYVAOCOQUAN
        {
            get
            {

                return _ngayvaocoquan;
            }
            set
            {

                //_ngayvaocoquan = (value == (DBNull.Value || null) ? MyDate.DateNull() : (DateTime)value);
                _ngayvaocoquan = value;
            }
        }

        /// <summary>
        /// Ngày tham gia cách mạng.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NGAYTGCM</c> column value.</value>
        public System.DateTime NGAYTGCM
        {
            get
            {

                return _ngaytgcm;
            }
            set
            {

                //_ngaytgcm = (value == (DBNull.Value || null) ? MyDate.DateNull() : (DateTime)value);
                _ngaytgcm = value;
            }
        }

        /// <summary>
        /// Ngày vào Đảng Cộng sản Việt Nam.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NGAYKETNAP</c> column value.</value>
        public System.DateTime NGAYKETNAP
        {
            get
            {
                return _ngayketnap;
            }
            set
            {

                //_ngayketnap = (value == (DBNull.Value || null) ? MyDate.DateNull() : (DateTime)value);
                _ngayketnap = value;
            }
        }

        /// <summary>
        /// Ngày chính thức.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NGAYCHINHTHUC</c> column value.</value>
        public System.DateTime NGAYCHINHTHUC
        {
            get
            {

                return _ngaychinhthuc;
            }
            set
            {

                _ngaychinhthuc = value;
            }
        }

        /// <summary>
        /// Ngày tham gia tổ chức chính trị, xã hội.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NGAYTGTCCTXH</c> column value.</value>
        public System.DateTime NGAYTGTCCTXH
        {
            get
            {

                return _ngaytgtcctxh;
            }
            set
            {

                _ngaytgtcctxh = value;
            }
        }

        /// <summary>
        /// Ngày nhập ngũ.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NGAYNHAPNGU</c> column value.</value>
        public System.DateTime NGAYNHAPNGU
        {
            get
            {

                return _ngaynhapngu;
            }
            set
            {

                _ngaynhapngu = value;
            }
        }


        /// <summary>
        /// Ngày xuất ngũ.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NGAYXUATNGU</c> column value.</value>
        public System.DateTime NGAYXUATNGU
        {
            get
            {

                return _ngayxuatngu;
            }
            set
            {

                _ngayxuatngu = value;
            }
        }

        /// <summary>
        /// Quân hàm, chức vụ cao nhất.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>QUANHAMCHUCVUCN</c> column value.</value>
        public string QUANHAMCHUCVUCN
        {
            get { return _quanhamchucvucn; }
            set { _quanhamchucvucn = value; }
        }

        /// <summary>
        /// Năm nhận quân hàm chức vụ cao nhất.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NAMQHCV</c> column value.</value>
        public int NAMQHCV
        {
            get { return _namqhcv; }
            set { _namqhcv = value; }
        }

        /// <summary>
        /// Trình độ học vấn.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_HOCVAN</c> column value.</value>
        public int ID_HOCVAN
        {
            get
            {

                return _id_hocvan;
            }
            set
            {

                _id_hocvan = value;
            }
        }

        /// <summary>
        /// Trình độ chuyên môn (Cao đẳng, Đại học, Thạc sỹ).
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_CHUYENMON</c> column value.</value>
        public int ID_CHUYENMON
        {
            get
            {

                return _id_chuyenmon;
            }
            set
            {

                _id_chuyenmon = value;
            }
        }


        /// <summary>
        /// Học hàm, học vị cao nhất.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_HOCHAM</c> column value.</value>
        public int ID_HOCHAM
        {
            get
            {
                return _id_hocham;
            }
            set
            {
                _id_hocham = value;
            }
        }


        /// <summary>
        /// Trình độ lý luận chính trị.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_CHINHTRI</c> column value.</value>
        public int ID_CHINHTRI
        {
            get
            {
                return _id_chinhtri;
            }
            set
            {
                _id_chinhtri = value;
            }
        }


        /// <summary>
        /// 23.Trình độ ngoại ngữ.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NGOAINGU</c> column value.</value>
        public string NGOAINGU
        {
            get { return _ngoaingu; }
            set { _ngoaingu = value; }
        }

        /// <summary>
        /// 24.Trình độ tin học.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>TINHOC</c> column value.</value>
        public string TINHOC
        {
            get { return _tinhoc; }
            set { _tinhoc = value; }
        }

        /// <summary>
        /// 25.Công tác chính đang làm.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>CONGTACCHINH</c> column value.</value>
        public string CONGTACCHINH
        {
            get { return _congtacchinh; }
            set { _congtacchinh = value; }
        }

        /// <summary>
        /// 27.1. Danh hiệu được phong
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_DANHHIEU</c> column value.</value>
        public int ID_DANHHIEU
        {
            get
            {
                return _id_danhhieu;
            }
            set
            {
                _id_danhhieu = value;
            }
        }

        /// <summary>
        /// 27.2. Năm được phong danh hiệu
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NAMDANHHIEU</c> column value.</value>
        public int NAMDANHHIEU
        {
            get
            {
                return _namdanhhieu;
            }
            set
            {
                _namdanhhieu = value;
            }
        }

        /// <summary>
        /// 28.1. Sở trường công tác.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>SOTRUONGCT</c> column value.</value>
        public string SOTRUONGCT
        {
            get { return _sotruongct; }
            set { _sotruongct = value; }
        }

        /// <summary>
        /// 28.2. Công việc đã làm lâu nhất
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>CONGVIECLAUNHAT</c> column value.</value>
        public string CONGVIECLAUNHAT
        {
            get { return _congvieclaunhat; }
            set { _congvieclaunhat = value; }
        }

        /// <summary>
        /// 31.Tình trạng sức khỏe.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_SUCKHOE</c> column value.</value>
        public int ID_SUCKHOE
        {
            get { return _id_suckhoe; }
            set { _id_suckhoe = value; }
        }

        /// <summary>
        /// Chiều cao.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>CHIEUCAO</c> column value.</value>
        public string CHIEUCAO
        {
            get { return _chieucao; }
            set { _chieucao = value; }
        }

        /// <summary>
        /// Cân nặng.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>CANNANG</c> column value.</value>
        public string CANNANG
        {
            get
            {
                return _cannang;
            }
            set
            {
                _cannang = value;
            }
        }

        /// <summary>
        /// Nhóm máu.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NHOMMAU</c> column value.</value>
        public int ID_NHOMMAU
        {
            get
            {
                return _id_nhommau;
            }
            set
            {
                _id_nhommau = value;
            }
        }

        /// <summary>
        /// 32.Số chứng minh thư nhân dân.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>CMND</c> column value.</value>
        public string CMND
        {
            get { return _cmnd; }
            set { _cmnd = value; }
        }

        /// <summary>
        /// Cấp ngày.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NGAYCAP</c> column value.</value>
        public System.DateTime NGAYCAP
        {
            get
            {
                return _ngaycap;
            }
            set
            {
                _ngaycap = value;
            }
        }

        /// <summary>
        /// Cơ quan cấp.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>COQUANCAP</c> column value.</value>
        public string COQUANCAP
        {
            get { return _coquancap; }
            set { _coquancap = value; }
        }

        /// <summary>
        /// 33.Thương binh loại.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_THUONGBINH</c> column value.</value>
        public int ID_THUONGBINH
        {
            get
            {
                return _id_thuongbinh;
            }
            set
            {
                _id_thuongbinh = value;
            }
        }

        /// <summary>
        /// Gia đình liệt sĩ.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>GIADINHLIETSY</c> column value.</value>
        public bool GIADINHLIETSY
        {
            get { return _giadinhlietsy; }
            set { _giadinhlietsy = value; }
        }

        /// <summary>
        /// Gia đình có công cách mạng.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>GIADINHCCCM</c> column value.</value>
        public bool GIADINHCCCM
        {
            get { return _giadinhcccm; }
            set { _giadinhcccm = value; }
        }

        /// <summary>
        /// 39.HOÀN CẢNH KINH TẾ.
        /// Nguồn thu nhập chính của gia đình (hàng năm):
        /// ... Lương.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>LUONG</c> column value.</value>
        public string LUONG
        {
            get { return _luong; }
            set { _luong = value; }
        }

        /// <summary>
        /// 39.HOÀN CẢNH KINH TẾ.
        /// Nguồn thu nhập chính của gia đình (hàng năm):
        /// ... Các nguồn khác.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>CACNGUONKHAC</c> column value.</value>
        public string CACNGUONKHAC
        {
            get { return _cacnguonkhac; }
            set { _cacnguonkhac = value; }
        }

        /// <summary>
        /// 39.HOÀN CẢNH KINH TẾ.
        /// Nguồn thu nhập chính của gia đình (hàng năm):
        /// ... Các nguồn khác.
        /// ... ... Nhà ở:
        /// ... ... ... Được cấp, được thuê, loại nhà
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NHAO_1</c> column value.</value>
        public string NHAO_1
        {
            get { return _nhao_1; }
            set { _nhao_1 = value; }
        }

        /// <summary>
        /// 39.HOÀN CẢNH KINH TẾ.
        /// Nguồn thu nhập chính của gia đình (hàng năm):
        /// ... Các nguồn khác.
        /// ... ... Nhà ở:
        /// ... ... ... Được cấp, được thuê, loại nhà
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NHAO_1</c> column value.</value>
        public float DIENTICH_1
        {
            get { return _dientich_1; }
            set { _dientich_1 = value; }
        }

        /// <summary>
        /// 39.HOÀN CẢNH KINH TẾ.
        /// Nguồn thu nhập chính của gia đình (hàng năm):
        /// ... Các nguồn khác.
        /// ... ... Nhà ở:
        /// ... ... ... Nhà tự mua, tự xây, loại nhà.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NHAO_2</c> column value.</value>
        public string NHAO_2
        {
            get { return _nhao_2; }
            set { _nhao_2 = value; }
        }

        /// <summary>
        /// 39.HOÀN CẢNH KINH TẾ.
        /// Nguồn thu nhập chính của gia đình (hàng năm):
        /// ... Các nguồn khác.
        /// ... ... Nhà ở:
        /// ... ... ... Được cấp, được thuê, loại nhà
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NHAO_1</c> column value.</value>
        public float DIENTICH_2
        {
            get { return _dientich_2; }
            set { _dientich_2 = value; }
        }

        /// <summary>
        /// 39.HOÀN CẢNH KINH TẾ.
        /// Nguồn thu nhập chính của gia đình (hàng năm):
        /// ... Các nguồn khác.
        /// ... ... Đất ở:
        /// ... ... ... Đất được cấp.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>DATO_1</c> column value.</value>
        public string DATO_1
        {
            get { return _dato_1; }
            set { _dato_1 = value; }
        }

        /// <summary>
        /// 39.HOÀN CẢNH KINH TẾ.
        /// Nguồn thu nhập chính của gia đình (hàng năm):
        /// ... Các nguồn khác.
        /// ... ... Đất ở:
        /// ... ... ... Đất tự mua.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>DATO_2</c> column value.</value>
        public string DATO_2
        {
            get { return _dato_2; }
            set { _dato_2 = value; }
        }

        /// <summary>
        /// 39.HOÀN CẢNH KINH TẾ.
        /// Nguồn thu nhập chính của gia đình (hàng năm):
        /// ... Các nguồn khác.
        /// ... ... Đất sản xuất, kinh doanh:
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>DATSXKD</c> column value.</value>
        public string DATSXKD
        {
            get { return _datsxkd; }
            set { _datsxkd = value; }
        }

        /// <summary>
        /// Năm làm Cán bộ quản lý.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>NAMCBQL</c> column value.</value>
        public System.DateTime NAMCBQL
        {
            get
            {
                return _namcbql;
            }
            set
            {
                _namcbql = value;
            }
        }

        /// <summary>
        /// Hệ đào tạo (Chính quy, Tại chức,...)
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_HEDAOTAO</c> column value.</value>
        public int ID_HEDAOTAO
        {
            get
            {
                return _id_hedaotao;
            }
            set
            {
                _id_hedaotao = value;
            }
        }


        /// <summary>
        /// Môn đào tạo.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>ID_MONDAOTAO</c> column value.</value>
        public int ID_MONDAOTAO
        {
            get
            {
                return _id_mondaotao;
            }
            set
            {
                _id_mondaotao = value;
            }
        }


        /// <summary>
        /// Đã học quản lý giáo dục?
        /// </summary>
        /// <value>The <c>QLGIAODUC</c> column value.</value>
        public bool QLGIAODUC
        {
            get { return _qlgiaoduc; }
            set { _qlgiaoduc = value; }
        }

        /// <summary>
        /// Đã học quản lý nhà nước?
        /// </summary>
        /// <value>The <c>QLNHANUOC</c> column value.</value>
        public bool QLNHANUOC
        {
            get { return _qlnhanuoc; }
            set { _qlnhanuoc = value; }
        }

        /// <summary>
        /// Hệ số phụ cấp chức vụ?
        /// </summary>
        /// <value>The <c>HESOPCCV</c> column value.</value>
        public float HESOPCCV
        {
            get { return _hesopccv; }
            set { _hesopccv = value; }
        }

        /// <summary>
        /// Ghi chú.
        /// This column is nullable.
        /// </summary>
        /// <value>The <c>GHICHU</c> column value.</value>
        public string GHICHU
        {
            get { return _ghichu; }
            set { _ghichu = value; }
        }

        /// <summary>
        /// Cơ quan tuyển dụng.
        /// This column isnot nullable.
        /// </summary>
        /// <value>The <c>ID_DONVI</c> column value.</value>
        public int ID_DONVI
        {
            get
            {
                return _id_donvi;
            }
            set
            {
                _id_donvi = value;
            }
        }
        #endregion

        public int ColumnLength(string column)
        {
            return (int)MITI.BaseDB.Instance.ExecSql_DataValue("select COL_LENGTH('DONVI','" + column + "')") / 2;
        }

        /// <summary>
        /// Lấy thuộc tính của lớp đối tượng NHANVIEN theo string name.
        /// Dùng hàm này để các hàm insert, update có thể dùng câu lệnh for cho các thuộc tính
        /// </summary>
        /// <param name="paramName">The name of the parameter.</param>
        /// <param name="value">The value of the parameter.</param>
        /// <returns>Giá trị của thuộc tính đó.</returns>
        public object GetValueByName(string paramName)
        {
            object obj = null;
            switch (paramName)
            {
                case "ID_NHANVIEN":
                    obj = _id_nhanvien;
                    break;
                case "ID_LOAINV":
                    obj = _id_loainv;
                    break;
                case "MACBCC":
                    obj = _macbcc;
                    break;
                case "TEN_KHAISINH":
                    obj = _ten_khaisinh;
                    break;
                case "GIOITINH":
                    obj = _gioitinh;
                    break;
                case "TEN_THUONGGOI":
                    obj = _ten_thuonggoi;
                    break;
                case "ID_CHUCVU_DANG":
                    obj = _id_chucvu_dang;
                    break;
                case "ID_CHUCVU_CQ":
                    obj = _id_chucvu_cq;
                    break;
                case "ID_CHUCVU_DT":
                    obj = _id_chucvu_dt;
                    break;
                case "NGAYSINH":
                    obj = _ngaysinh;
                    break;
                case "NOISINH":
                    obj = _id_noisinh;
                    break;
                case "QUEQUAN":
                    obj = _id_quequan;
                    break;
                case "DIACHI":
                    obj = _diachi;
                    break;
                case "ID_DANTOC":
                    obj = _id_dantoc;
                    break;
                case "ID_TONGIAO":
                    obj = _id_tongiao;
                    break;
                case "ID_THANHPHAN":
                    obj = _id_thanhphan;
                    break;
                case "NGHENGHIEPTRUOC":
                    obj = _nghenghieptruoc;
                    break;
                case "NGAYTUYENDUNG":
                    obj = _ngaytuyendung;
                    break;
                case "COQUANTUYENDUNG":
                    obj = _coquantuyendung;
                    break;
                case "NGAYVAOCOQUAN":
                    obj = _ngayvaocoquan;
                    break;
                case "NGAYTGCM":
                    obj = _ngaytgcm;
                    break;
                case "NGAYKETNAP":
                    obj = _ngayketnap;
                    break;
                case "NGAYCHINHTHUC":
                    obj = _ngaychinhthuc;
                    break;
                case "NGAYTGTCCTXH":
                    obj = _ngaytgtcctxh;
                    break;
                case "NGAYNHAPNGU":
                    obj = _ngaynhapngu;
                    break;
                case "NGAYXUATNGU":
                    obj = _ngayxuatngu;
                    break;
                case "QUANHAMCHUCVUCN":
                    obj = _quanhamchucvucn;
                    break;
                case "NAMQHCV":
                    obj = _namqhcv;
                    break;
                case "ID_HOCVAN":
                    obj = _id_hocvan;
                    break;
                case "ID_CHUYENMON":
                    obj = _id_chuyenmon;
                    break;
                case "ID_HOCHAM":
                    obj = _id_hocham;
                    break;
                case "ID_CHINHTRI":
                    obj = _id_chinhtri;
                    break;
                case "NGOAINGU":
                    obj = _ngoaingu;
                    break;
                case "TINHOC":
                    obj = _tinhoc;
                    break;
                case "CONGTACCHINH":
                    obj = _congtacchinh;
                    break;
                case "ID_DANHHIEU":
                    obj = _id_danhhieu;
                    break;
                case "NAMDANHHIEU":
                    obj = _namdanhhieu;
                    break;
                case "SOTRUONGCT":
                    obj = _sotruongct;
                    break;
                case "CONGVIECLAUNHAT":
                    obj = _congvieclaunhat;
                    break;
                case "ID_SUCKHOE":
                    obj = _id_suckhoe;
                    break;
                case "CHIEUCAO":
                    obj = _chieucao;
                    break;
                case "CANNANG":
                    obj = _cannang;
                    break;
                case "ID_NHOMMAU":
                    obj = _id_nhommau;
                    break;
                case "CMND":
                    obj = _cmnd;
                    break;
                case "NGAYCAP":
                    obj = _ngaycap;
                    break;
                case "COQUANCAP":
                    obj = _coquancap;
                    break;
                case "ID_THUONGBINH":
                    obj = _id_thuongbinh;
                    break;
                case "GIADINHLIETSY":
                    obj = _giadinhlietsy;
                    break;
                case "GIADINHCCCM":
                    obj = _giadinhcccm;
                    break;
                case "LUONG":
                    obj = _luong;
                    break;
                case "CACNGUONKHAC":
                    obj = _cacnguonkhac;
                    break;
                case "NHAO_1":
                    obj = _nhao_1;
                    break;
                case "DIENTICH_1":
                    obj = _dientich_1;
                    break;
                case "NHAO_2":
                    obj = _nhao_2;
                    break;
                case "DIENTICH_2":
                    obj = _dientich_2;
                    break;
                case "DATO_1":
                    obj = _dato_1;
                    break;
                case "DATO_2":
                    obj = _dato_2;
                    break;
                case "DATSXKD":
                    obj = _datsxkd;
                    break;
                case "NAMCBQL":
                    obj = _namcbql;
                    break;
                case "ID_DONVI":
                    obj = _id_donvi;
                    break;
                case "ID_HEDAOTAO":
                    obj = _id_hedaotao;
                    break;
                case "ID_MONDAOTAO":
                    obj = _id_mondaotao;
                    break;
                case "QLGIAODUC":
                    obj = _qlgiaoduc;
                    break;
                case "QLNHANUOC":
                    obj = _qlnhanuoc;
                    break;
                case "HESOPCCV":
                    obj = _hesopccv;
                    break;
                case "GHICHU":
                    obj = _ghichu;
                    break;
            }
            return obj;
        }
        /// <summary>
        /// Gán giá trị cho thuộc tính của lớp đối tượng NHANVIEN theo string name.
        /// Dùng hàm này để các hàm insert, update có thể dùng câu lệnh for cho các thuộc tính
        /// </summary>
        /// <param name="paramName">The name of the parameter.</param>
        /// <param name="value">The value of the parameter.</param>
        /// <returns>Giá trị của thuộc tính đó.</returns>
        public void SetValueByName(string paramName, object value)
        {
            switch (paramName)
            {
                case "ID_NHANVIEN":
                    _id_nhanvien = (int)value;
                    break;
                case "ID_LOAINV":
                    _id_loainv = (int)value;
                    break;
                case "MACBCC":
                    _macbcc = value.ToString();
                    break;
                case "TEN_KHAISINH":
                    _ten_khaisinh = value.ToString();
                    break;
                case "GIOITINH":
                    _gioitinh = value.ToString();
                    break;
                case "TEN_THUONGGOI":
                    _ten_thuonggoi = value.ToString();
                    break;
                case "ID_CHUCVU_DANG":
                    //Dung try cath cho truong hop id_suckhoe chua duoc su dung
                    try
                    {
                        _id_chucvu_dang = (int)value;
                    }
                    catch
                    {
                        _id_chucvu_dang = -1;
                    }
                    break;
                case "ID_CHUCVU_CQ":
                    try
                    {
                        _id_chucvu_cq = (int)value;
                    }
                    catch
                    {
                        _id_chucvu_cq = -1;
                    }
                    break;
                case "ID_CHUCVU_DT":
                    try
                    {
                        _id_chucvu_dt = (int)value;
                    }
                    catch
                    {
                        _id_chucvu_dt = -1;
                    }
                    break;
                case "NGAYSINH":
                    _ngaysinh = (value == DBNull.Value ? MyDate.DateNull() : (DateTime)value);
                    break;
                case "NOISINH":
                    try
                    {
                        _id_noisinh = (System.Int16)value;
                    }
                    catch
                    {
                        _id_noisinh = -1;
                    }
                    break;
                case "QUEQUAN":
                    try
                    {
                        _id_quequan = (System.Int16)value;
                    }
                    catch
                    {
                        _id_quequan = -1;
                    }
                    break;
                case "DIACHI":
                    _diachi = value.ToString();
                    break;
                case "ID_DANTOC":
                    _id_dantoc = (int)value;
                    break;
                case "ID_TONGIAO":
                    _id_tongiao = (int)value;
                    break;
                case "ID_THANHPHAN":
                    _id_thanhphan = (int)value;
                    break;
                case "NGHENGHIEPTRUOC":
                    _nghenghieptruoc = value.ToString();
                    break;
                case "NGAYTUYENDUNG":
                    _ngaytuyendung = (value == DBNull.Value ? MyDate.DateNull() : (DateTime)value);
                    break;
                case "COQUANTUYENDUNG":
                    _coquantuyendung = value.ToString();
                    break;
                case "NGAYVAOCOQUAN":
                    _ngayvaocoquan = (value == DBNull.Value ? MyDate.DateNull() : (DateTime)value);
                    break;
                case "NGAYTGCM":
                    _ngaytgcm = (value == DBNull.Value ? MyDate.DateNull() : (DateTime)value);
                    break;
                case "NGAYKETNAP":
                    _ngayketnap = (value == DBNull.Value ? MyDate.DateNull() : (DateTime)value);
                    break;
                case "NGAYCHINHTHUC":
                    _ngaychinhthuc = (value == DBNull.Value ? MyDate.DateNull() : (DateTime)value);
                    break;
                case "NGAYTGTCCTXH":
                    _ngaytgtcctxh = (value == DBNull.Value ? MyDate.DateNull() : (DateTime)value);
                    break;
                case "NGAYNHAPNGU":
                    _ngaynhapngu = (value == DBNull.Value ? MyDate.DateNull() : (DateTime)value);
                    break;
                case "NGAYXUATNGU":
                    _ngayxuatngu = (value == DBNull.Value ? MyDate.DateNull() : (DateTime)value);
                    break;
                case "QUANHAMCHUCVUCN":
                    _quanhamchucvucn = value.ToString();
                    break;
                case "NAMQHCV":
                    try
                    {
                        _namqhcv = (int)value;
                    }
                    catch
                    {
                        _namqhcv = -1;
                    }
                    break;
                case "ID_HOCVAN":
                    _id_hocvan = (int)value;
                    break;
                case "ID_CHUYENMON":
                    _id_chuyenmon = (int)value;
                    break;
                case "ID_HOCHAM":
                    try
                    {
                        _id_hocham = (int)value;
                    }
                    catch
                    {
                        _id_hocham = -1;
                    }
                    break;
                case "ID_CHINHTRI":
                    _id_chinhtri = (int)value;
                    break;
                case "NGOAINGU":
                    _ngoaingu = value.ToString();
                    break;
                case "TINHOC":
                    _tinhoc = value.ToString();
                    break;
                case "CONGTACCHINH":
                    _congtacchinh = value.ToString();
                    break;
                case "ID_DANHHIEU":
                    try
                    {
                        _id_danhhieu = (int)value;
                    }
                    catch
                    {
                        _id_danhhieu = -1;
                    }
                    break;
                case "NAMDANHHIEU":
                    try
                    {
                        _namdanhhieu = (int)value;
                    }
                    catch
                    {
                        _namdanhhieu = -1;
                    }
                    break;
                case "SOTRUONGCT":
                    _sotruongct = value.ToString();
                    break;
                case "CONGVIECLAUNHAT":
                    _congvieclaunhat = value.ToString();
                    break;
                case "ID_SUCKHOE":
                    //Dung try cath cho truong hop id_suckhoe chua duoc su dung
                    try
                    {
                        _id_suckhoe = (int)value;
                    }
                    catch
                    {
                        _id_suckhoe = -1;
                    }
                    break;
                case "CHIEUCAO":
                    _chieucao = value.ToString();
                    break;
                case "CANNANG":
                    _cannang = value.ToString();
                    break;
                case "ID_NHOMMAU":
                    try
                    {
                        _id_nhommau = (int)value;
                    }
                    catch
                    {
                        _id_nhommau = -1;
                    }
                   
                    break;
                case "CMND":
                    _cmnd = value.ToString();
                    break;
                case "NGAYCAP":
                    _ngaycap = (value == DBNull.Value ? MyDate.DateNull() : (DateTime)value);
                    break;
                case "COQUANCAP":
                    _coquancap = value.ToString();
                    break;
                case "ID_THUONGBINH":
                    //Dung try cath cho truong hop id_thuongbinh chua duoc su dung
                    try
                    {
                        _id_thuongbinh = (int)value;
                    }
                    catch
                    {
                        _id_thuongbinh = -1;
                    }
                    break;
                case "GIADINHLIETSY":
                    try
                    {
                        _giadinhlietsy = bool.Parse(value.ToString());
                    }
                    catch
                    {
                        _giadinhlietsy = false;
                    }
                    break;
                case "GIADINHCCCM":
                    try
                    {
                        _giadinhcccm = bool.Parse(value.ToString());
                    }
                    catch
                    {
                        _giadinhcccm = false;
                    }
                    break;
                case "LUONG":
                    _luong = value.ToString();
                    break;
                case "CACNGUONKHAC":
                    _cacnguonkhac = value.ToString();
                    break;
                case "NHAO_1":
                    _nhao_1 = value.ToString();
                    break;
                case "DIENTICH_1":
                    try
                    {
                        _dientich_1 = float.Parse(value.ToString());
                    }
                    catch
                    {
                        _dientich_1 = -1;
                    }
                    break;
                case "NHAO_2":
                    _nhao_2 = value.ToString();
                    break;
                case "DIENTICH_2":
                    try
                    {
                        _dientich_2 = float.Parse(value.ToString());
                    }
                    catch
                    {
                        _dientich_2 = -1;
                    }
                    break;
                case "DATO_1":
                    _dato_1 = value.ToString();
                    break;
                case "DATO_2":
                    _dato_2 = value.ToString();
                    break;
                case "DATSXKD":
                    _datsxkd = value.ToString();
                    break;
                case "NAMCBQL":
                    _namcbql = (value == DBNull.Value ? MyDate.DateNull() : (DateTime)value);
                    break;
                case "ID_DONVI":
                    _id_donvi = (int)value;
                    break;
                case "ID_HEDAOTAO":
                    //Dung try cath cho truong hop id_thuongbinh chua duoc su dung
                    try
                    {
                        _id_hedaotao = (int)value;
                    }
                    catch
                    {
                        _id_hedaotao = -1;
                    }
                    break;
                case "ID_MONDAOTAO":
                    //Dung try cath cho truong hop id_thuongbinh chua duoc su dung
                    try
                    {
                        _id_mondaotao = (int)value;
                    }
                    catch
                    {
                        _id_mondaotao = -1;
                    }
                    break;
                case "QLGIAODUC":
                    _qlgiaoduc = bool.Parse(value.ToString());
                    break;
                case "QLNHANUOC":
                    _qlnhanuoc = bool.Parse(value.ToString());
                    break;
                case "HESOPCCV":
                    //Dung try cath cho truong hop HESOPCCV chua duoc su dung
                    try
                    {
                        _hesopccv = float.Parse(value.ToString());
                    }
                    catch
                    {
                        _hesopccv = 0;
                    }
                    break;
                case "GHICHU":
                    _ghichu = value.ToString();
                    break;
            }

        }
    }

    public class CNHANVIENCollection
    {
        public static string[] _params = { 
           "ID_NHANVIEN" 
           ,"ID_DONVI"
           ,"ID_LOAINV"
           ,"MACBCC"
           ,"TEN_KHAISINH"
           ,"GIOITINH"
           ,"TEN_THUONGGOI"           
           ,"ID_CHUCVU_DANG"
           ,"ID_CHUCVU_CQ"
           ,"ID_CHUCVU_DT"
           ,"NGAYSINH"
           ,"NOISINH"
           ,"QUEQUAN"
           ,"DIACHI"
           ,"ID_DANTOC"
           ,"ID_TONGIAO"
           ,"ID_THANHPHAN"
           ,"NGHENGHIEPTRUOC"
           ,"NGAYTUYENDUNG"
           ,"COQUANTUYENDUNG"
           ,"NGAYVAOCOQUAN"
           ,"NGAYTGCM"
           ,"NGAYKETNAP"
           ,"NGAYCHINHTHUC"
           ,"NGAYTGTCCTXH"
           ,"NGAYNHAPNGU"
           ,"NGAYXUATNGU"
           ,"QUANHAMCHUCVUCN"
           ,"NAMQHCV"
           ,"ID_HOCVAN"
           ,"ID_CHUYENMON"
           ,"ID_HOCHAM"
           ,"ID_CHINHTRI"
           ,"NGOAINGU"
           ,"TINHOC"
           ,"CONGTACCHINH"
           ,"ID_DANHHIEU"
           ,"NAMDANHHIEU"
           ,"SOTRUONGCT"
           ,"CONGVIECLAUNHAT"
           ,"ID_SUCKHOE"
           ,"CHIEUCAO"
           ,"CANNANG"
           ,"ID_NHOMMAU"
           ,"CMND"
           ,"NGAYCAP"
           ,"COQUANCAP"
           ,"ID_THUONGBINH"
           ,"GIADINHLIETSY"
           ,"GIADINHCCCM"
           ,"LUONG"
           ,"CACNGUONKHAC"
           ,"NHAO_1"
           ,"DIENTICH_1"
           ,"NHAO_2"
           ,"DIENTICH_2"
           ,"DATO_1"
           ,"DATO_2"
           ,"DATSXKD"
           ,"NAMCBQL"
           ,"ID_HEDAOTAO"
           ,"ID_MONDAOTAO"
           ,"QLGIAODUC"
           ,"QLNHANUOC"
           ,"HESOPCCV"
           ,"GHICHU"
           };

        public static CNHANVIEN LayNhanVienTheoID(int nhanvienid)
        {
            DataSet ds;
            ds = MITI.BaseDB.Instance.ExecSql_DataSet("select * from NHANVIEN where id_nhanvien = " + nhanvienid);
            System.Data.DataTable db = ds.Tables[0];
            CNHANVIEN objNV = new CNHANVIEN();
            for (int i = 0; i < _params.Length; i++)
            {
                objNV.SetValueByName(_params[i], db.Rows[0][_params[i]]);
            }
            return objNV;
        }

        public static System.Data.DataTable ExportExcelNhanVienTheoID(int nhanvienid)
        {
            System.Data.DataSet ds;
            ds = MITI.BaseDB.Instance.ExecSql_DataSet("select * from view_ExportNHANSU where id_nhanvien = " + nhanvienid);
            System.Data.DataTable db = ds.Tables[0];
            return db;
        }

        public static DataSet LayDSNhanVienTheoDK(string strDK)
        {
            System.Data.DataSet ds;
            //string strSQL = "select * from view_NhanSu where left(nhom, " + nhom.Length.ToString() + ") = '" + nhom + "'";
            string strSQL = "select * from view_NhanSu where " + strDK;
            ds = MITI.BaseDB.Instance.ExecSql_DataSet(strSQL);
            return ds;
        }


        /// <summary>
        /// Danh sách lương tiếp theo bao gồm "nâng lương bình thường" và "vượt khung" khi đã tới niên hạn
        /// </summary>
        /// <param name="nhom"></param>
        /// <param name="dotnang">đợt nâng lương</param>
        /// <returns></returns>
        public static DataSet LayDSNangLuongTheo_NhomDONVI(string nhom, int dotnang, int namxepluong)
        {
            DataSet ds;
            string strSQL = "select * from view_DSNangLuong where";
            strSQL += " left(nhom, " + nhom.Length.ToString() + ") = '" + nhom + "'";
            if (namxepluong > 0)
                strSQL += " and namluong2 <= " + namxepluong;
            if (dotnang == 1)
            {
                strSQL += " and month(NAMXEPLUONG) <= 6";
            }
            else
            {
                strSQL += " and month(NAMXEPLUONG) > 6";
            }
            ds = MITI.BaseDB.Instance.ExecSql_DataSet(strSQL);
            return ds;
        }


        /// <summary>
        /// Danh sách phụ cấp thâm niên vượt khung" khi đã tới niên hạn tăng phụ cấp
        /// </summary>
        /// <param name="nhom"></param>
        /// <param name="dotnang">đợt nâng lương</param>
        /// <returns></returns>
        public static DataSet LayDSPCThamNienVuotKhungTheo_NhomDONVI(string nhom, int dotnang, int namxepluong)
        {
            DataSet ds;
            string strSQL = "select * from view_DSPCThamNienVuotKhung where";
            strSQL += " left(nhom, " + nhom.Length.ToString() + ") = '" + nhom + "'";
            if (namxepluong > 0)
                strSQL += " and namluong2 <= " + namxepluong;
            if (dotnang == 1)
            {
                strSQL += " and month(NAMXEPLUONG) <= 6";
            }
            else
            {
                strSQL += " and month(NAMXEPLUONG) > 6";
            }
            ds = MITI.BaseDB.Instance.ExecSql_DataSet(strSQL);
            return ds;
        }

        public static bool Insert(CNHANVIEN objNHANVIEN)
        {
            StringBuilder objStringBuilder = new StringBuilder(250);
            objStringBuilder.Append("INSERT INTO NHANVIEN VALUES(");

            //Bắt đầu từ i = 1 để không lấy ID_NHANVIEN
            for (int i = 1; i < _params.Length; i++)
            {
                if (_params[i] == "GHICHU")
                {
                    objStringBuilder.Append(MITI.BaseDB.Instance.GetParamPlaceHolder(_params[i], false));
                }
                else
                {
                    objStringBuilder.Append(MITI.BaseDB.Instance.GetParamPlaceHolder(_params[i], true));
                }
            }
            objStringBuilder.Append(")");

            string sInsert = objStringBuilder.ToString();

            SqlCommand cmd = MITI.BaseDB.Instance.CreateCommand(sInsert, CommandType.StoredProcedure);
            long lRowsAffected = 0;

            try
            {
                {
                    cmd.Transaction = cmd.Connection.BeginTransaction();
                    //Bắt đầu từ i = 1 để không lấy ID_NHANVIEN
                    for (int i = 1; i < _params.Length; i++)
                    {
                        AddParameter(ref cmd, _params[i], objNHANVIEN.GetValueByName(_params[i]));

                    }
                    lRowsAffected = cmd.ExecuteNonQuery();
                }
                cmd.Transaction.Commit();
                //Tra ve id_nhanvien vua tao

            }
            catch (System.Exception ex)
            {
                cmd.Transaction.Rollback();
                throw ex;
            }
            finally
            {
                MITI.BaseDB.Instance.CloseConnect();
            }
            return true;
        }

        public static void getmaxId_NV(ref CNHANVIEN objStaff)
        {
            /*
             * Dungnv : 01/09/2008 
             * Lay maxid trong bang Nhan Vien 
             */
            //Cau lenh lay id_nhanvien neu duoc tao thanh cong

            DataSet objDs = new DataSet();
            string strSQL = "SELECT  max(id_nhanvien) idmax FROM NHANVIEN  ";
            objDs = MITI.BaseDB.Instance.ExecSql_DataSet(strSQL);

            if (objDs.Tables[0].Rows.Count > 0)
            {
                objStaff.ID_NHANVIEN = int.Parse(objDs.Tables[0].Rows[0][0].ToString().Trim());
            }
            else
            {
                objStaff.ID_NHANVIEN = 0;
            }

        }

        /// <summary>
        /// Insert xong tra ve id cua doi tuong
        /// </summary>
        /// <param name="objNHANVIEN"></param>
        /// <returns></returns>
        public static int InsertandReturnID(CNHANVIEN objNHANVIEN)
        {
            StringBuilder objStringBuilder = new StringBuilder(250);
            objStringBuilder.Append("INSERT INTO NHANVIEN VALUES(");

            //Bắt đầu từ i = 1 để không lấy ID_NHANVIEN
            for (int i = 1; i < _params.Length; i++)
            {
                if (_params[i] == "GHICHU")
                {
                    objStringBuilder.Append(MITI.BaseDB.Instance.GetParamPlaceHolder(_params[i], false));
                }
                else
                {
                    objStringBuilder.Append(MITI.BaseDB.Instance.GetParamPlaceHolder(_params[i], true));
                }
            }
            objStringBuilder.Append(")");

            string sInsert = objStringBuilder.ToString();

            SqlCommand cmd = MITI.BaseDB.Instance.CreateCommand(sInsert, CommandType.StoredProcedure);
            long lRowsAffected = 0;

            try
            {
                {
                    cmd.Transaction = cmd.Connection.BeginTransaction();
                    //Bắt đầu từ i = 1 để không lấy ID_NHANVIEN
                    for (int i = 1; i < _params.Length; i++)
                    {
                        AddParameter(ref cmd, _params[i], objNHANVIEN.GetValueByName(_params[i]));

                    }
                    lRowsAffected = cmd.ExecuteNonQuery();
                }
                cmd.Transaction.Commit();
            }
            catch (System.Exception ex)
            {
                cmd.Transaction.Rollback();
                throw ex;
            }
            finally
            {
                MITI.BaseDB.Instance.CloseConnect();
            }
            //Tra ve id_nhanvien vua tao
            //LayIDTuCacThuocTinhConLai(ref objNHANVIEN);
            /* 
             * Dungnv : 09/09/2008 
             */

            getmaxId_NV(ref objNHANVIEN);

            return objNHANVIEN.ID_NHANVIEN;
        }

        public static long Update(CNHANVIEN objNHANVIEN)
        {
            long lRowsAffected = 0;
            string strSQL = "UPDATE NHANVIEN SET";
            //Bắt đầu từ i = 1 để không lấy ID_NHANVIEN
            for (int i = 1; i < _params.Length; i++)
            {
                if (_params[i] == "GHICHU")
                    strSQL += " " + _params[i] + " = " + MITI.BaseDB.Instance.GetParamPlaceHolder(_params[i], false);
                else
                    strSQL += " " + _params[i] + " = " + MITI.BaseDB.Instance.GetParamPlaceHolder(_params[i], true);
            }
            //Mệnh đề where sử dụng ID_NHANVIEN
            strSQL += " WHERE " + _params[0] + " = " + MITI.BaseDB.Instance.GetParamPlaceHolder(_params[0], false);

            SqlCommand cmd = MITI.BaseDB.Instance.CreateCommand(strSQL, CommandType.Text);
            try
            {
                cmd.Transaction = cmd.Connection.BeginTransaction();
                //Bắt đầu từ i = 1 để không lấy ID_NHANVIEN
                for (int i = 1; i < _params.Length; i++)
                {
                    AddParameter(ref cmd, _params[i], objNHANVIEN.GetValueByName(_params[i]));
                }
                //Mệnh đề where sử dụng ID_NHANVIEN
                AddParameter(ref cmd, _params[0], objNHANVIEN.GetValueByName(_params[0]));
                lRowsAffected = cmd.ExecuteNonQuery();
                cmd.Transaction.Commit();
            }
            catch (System.Exception ex)
            {
                cmd.Transaction.Rollback();
                throw ex;
            }
            finally
            {
                MITI.BaseDB.Instance.CloseConnect();
            }
            return lRowsAffected;
        }

        public static long Delete(CNHANVIEN objNHANVIEN)
        {
            long lRowsAffected = 0;
            string strSQL = "DELETE FROM NHANVIEN";
            //Mệnh đề where lấy ID_NHANVIEN
            strSQL += " WHERE " + _params[0] + " = " + MITI.BaseDB.Instance.GetParamPlaceHolder(_params[0], false);

            SqlCommand cmd = MITI.BaseDB.Instance.CreateCommand(strSQL, CommandType.Text);
            try
            {
                cmd.Transaction = cmd.Connection.BeginTransaction();
                AddParameter(ref cmd, _params[0], objNHANVIEN.GetValueByName(_params[0]));
                lRowsAffected = cmd.ExecuteNonQuery();
                cmd.Transaction.Commit();
            }
            catch (System.Exception ex)
            {
                cmd.Transaction.Rollback();
                throw ex;
            }
            finally
            {
                MITI.BaseDB.Instance.CloseConnect();
            }
            return lRowsAffected;
        }

        /// <summary>
        /// Adds a new parameter to the specified command.
        /// </summary>
        /// <param name="cmd">The <see cref="System.Data.SqlClient.SqlCommand"/> object to add the parameter to.</param>
        /// <param name="paramName">The name of the parameter.</param>
        /// <param name="value">The value of the parameter.</param>
        /// <returns>A reference to the added parameter.</returns>
        protected static SqlParameter AddParameter(ref SqlCommand cmd, string paramName, object value)
        {
            const string ID_ID = "TEN";
            SqlParameter parameter = null;
            switch (paramName)
            {
                //Kieu Int32
                case "ID_NHANVIEN":
                case "ID_LOAINV":
                case "ID_CHUCVU_DANG":
                case "ID_CHUCVU_CQ":
                case "ID_CHUCVU_DT":
                case "ID_DANTOC":
                case "ID_TONGIAO":
                case "ID_THANHPHAN":
                case "ID_DONVI":
                case "NAMQHCV":
                case "ID_HOCVAN":
                case "ID_CHUYENMON":
                case "ID_HOCHAM":
                case "ID_CHINHTRI":
                case "ID_SUCKHOE":
                case "ID_THUONGBINH":
                case "ID_HEDAOTAO":
                case "ID_MONDAOTAO":
                case "ID_DANHHIEU":
                case "ID_NHOMMAU":
                case "NAMDANHHIEU":
                    parameter = MITI.BaseDB.Instance.CreateParameter(ref cmd, paramName, DbType.Int32, ((int)value == -1 ? DBNull.Value : value));
                    break;

                //Kieu Int16
                case "NOISINH":
                case "QUEQUAN":
                    parameter = MITI.BaseDB.Instance.CreateParameter(ref cmd, paramName, DbType.Int16, ((System.Int16)value == -1 ? DBNull.Value : value));
                    break;
                //Kieu float
                case "HESOPCCV":
                case "DIENTICH_1":
                case "DIENTICH_2":
                    parameter = MITI.BaseDB.Instance.CreateParameter(ref cmd, paramName, DbType.Single, ((float)value == -1 ? 0 : value));
                    break;

                //Kieu Boolean
                case "QLGIAODUC":
                case "QLNHANUOC":
                    parameter = MITI.BaseDB.Instance.CreateParameter(ref cmd, paramName, DbType.Boolean, (value == null ? DBNull.Value : value));
                    break;

                //Kieu Date
                case "NGAYSINH":
                case "NGAYTUYENDUNG":
                case "NGAYVAOCOQUAN":
                case "NGAYTGCM":
                case "NGAYKETNAP":
                case "NGAYCHINHTHUC":
                case "NGAYTGTCCTXH":
                case "NGAYNHAPNGU":
                case "NGAYXUATNGU":
                case "NGAYCAP":
                case "NAMCBQL":
                    parameter = MITI.BaseDB.Instance.CreateParameter(ref cmd, paramName, DbType.Date, ((DateTime)value == MyDate.DateNull() ? DBNull.Value : value));
                    break;

                //Kieu String
                case "MACBCC":
                case "TEN_KHAISINH":
                case "GIOITINH":
                case "TEN_THUONGGOI":
                case "DIACHI":
                case "NGHENGHIEPTRUOC":
                case "COQUANTUYENDUNG":
                case "QUANHAMCHUCVUCN":
                case "NGOAINGU":
                case "TINHOC":
                case "CONGTACCHINH":
                case "SOTRUONGCT":
                case "CONGVIECLAUNHAT":
                case "CHIEUCAO":
                case "CANNANG":
                case "CMND":
                case "COQUANCAP":
                case "GIADINHLIETSY":
                case "GIADINHCCCM":
                case "LUONG":
                case "CACNGUONKHAC":
                case "NHAO_1":
                case "NHAO_2":
                case "DATO_1":
                case "DATO_2":
                case "DATSXKD":
                case "GHICHU":
                    parameter = MITI.BaseDB.Instance.CreateParameter(ref cmd, paramName, DbType.String, (value == null ? DBNull.Value : value));
                    break;
            }
            return parameter;
        }

        public static void ToEXCEL(int id_nhanvien)
        {
            System.Data.DataTable db = CNHANVIENCollection.ExportExcelNhanVienTheoID(id_nhanvien);
            System.Data.DataRow dr = db.Rows[0];
            string mFileTemplate = System.Windows.Forms.Application.StartupPath + "\\TempNHANSU.xls";
            string mFileName = System.Windows.Forms.Application.StartupPath + "\\SOYEULYLICH.xls";
            try
            {
                System.IO.File.Copy(mFileTemplate, mFileName, true);
            }
            catch
            {
                string strErr = "File " + mFileName + " đang mở hoặc không có, không thể thực hiện tiếp.";
                MessageBox.Show(strErr);
                return;
            }

            ApplicationClass excel = new ApplicationClass();
            excel.Application.Workbooks.Add(true);

            Excel_12.Application oExcel_12 = null;                //Excel_12 Application
            Excel_12.Workbook oBook = null;                       // Excel_12 Workbook

            Excel_12.Sheets oSheetsColl = null;                   // Excel_12 Worksheets collection
            Object oMissing = System.Reflection.Missing.Value;

            // Create an instance of Excel_12.
            oExcel_12 = new Excel_12.Application();

            // Set the UserControl property so Excel_12 won't shut down.
            oExcel_12.UserControl = true;

            // System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
            // Case 1: Add a workbook.
            //oBook = oExcel_12.Workbooks.Add(oMissing);
            // Case 2: Open a workbook
            oBook = oExcel_12.Workbooks.Open(mFileName, true, false, oMissing, oMissing,
                                            oMissing, oMissing, oMissing, oMissing, oMissing,
                                            oMissing, oMissing, oMissing, oMissing, oMissing);

            // Case 3: if not go and create a workbook:
            //oBook = oExcel_12.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
            //Microsoft.Office.Interop.Excel._Worksheet excelWorksheet = (Microsoft.Office.Interop.Excel._Worksheet)oBook.Worksheets.get_Item(1);


            // Get worksheets collection
            oSheetsColl = oExcel_12.Worksheets;

            Excel_12.Worksheet oSheet = null;                     // Excel_12 Worksheet
            Excel_12.Range oRange = null;                         // Cell or Range in worksheet

            //Get Sheet1
            oSheet = (Excel_12.Worksheet)oSheetsColl.get_Item("Sheet1");
            //Set Sheet1's name into "Nhân sự"
            //oSheet.Name = "Nhân sự";

            // Make Excel_12 visible to the user.
            oExcel_12.Visible = true;

            try
            {

                //Insert attributes values
                oRange = (Excel_12.Range)oSheet.Cells[2, 1];
                oRange.Value2 = "TRƯỜNG: " + dr["TEN_DONVI"];

                oRange = (Excel_12.Range)oSheet.Cells[6, 1];
                oRange.Value2 = "1. Họ và tên khai sinh: " + dr["TEN_KHAISINH"];

                oRange = (Excel_12.Range)oSheet.Cells[6, 8];
                oRange.Value2 = "Nam, nữ: " + dr["GIOITINH"];

                oRange = (Excel_12.Range)oSheet.Cells[7, 1];
                oRange.Value2 = "2. Họ và tên thường gọi: " + dr["TEN_THUONGGOI"];

                oRange = (Excel_12.Range)oSheet.Cells[9, 2];
                oRange.Value2 = "Chức vụ Đảng: " + dr["ChucVuDang"];

                oRange = (Excel_12.Range)oSheet.Cells[10, 2];
                oRange.Value2 = "Chức vụ chính quyền: " + dr["ChucVuChinhQuyen"];

                oRange = (Excel_12.Range)oSheet.Cells[11, 2];
                oRange.Value2 = "Chức vụ đoàn thể: " + dr["ChucVuDoanThe"];

                DateTime dt;
                oRange = (Excel_12.Range)oSheet.Cells[12, 1];
                try
                {
                    dt = DateTime.Parse(dr["NGAYSINH"].ToString());
                    oRange.Value2 = "4. Sinh ngày " + dt.Day.ToString() + " tháng " + dt.Month.ToString() + " năm " + dt.Year.ToString();
                }
                catch
                {
                    oRange.Value2 = "4. Sinh ngày ... tháng ... năm ...";
                }

                oRange = (Excel_12.Range)oSheet.Cells[13, 1];
                oRange.Value2 = "5. Nơi sinh " + dr["NOISINH"];

                oRange = (Excel_12.Range)oSheet.Cells[14, 1];
                oRange.Value2 = "6. Quê quán " + dr["QUEQUAN"];

                oRange = (Excel_12.Range)oSheet.Cells[15, 1];
                oRange.Value2 = "7. Nơi ở hiện nay: " + dr["DIACHI"];

                oRange = (Excel_12.Range)oSheet.Cells[16, 1];
                oRange.Value2 = "8. Dân tộc: " + dr["DANTOC"];

                oRange = (Excel_12.Range)oSheet.Cells[17, 1];
                oRange.Value2 = "9. Tôn giáo: " + dr["TONGIAO"];

                oRange = (Excel_12.Range)oSheet.Cells[18, 1];
                oRange.Value2 = "10. Thành phần gia đình xuất thân: " + dr["THANHPHAN"];

                oRange = (Excel_12.Range)oSheet.Cells[19, 1];
                oRange.Value2 = "11. Nghề nghiệp bản thân trước khi tuyển dụng: " + dr["NGHENGHIEPTRUOC"];

                oRange = (Excel_12.Range)oSheet.Cells[20, 1];
                oRange.Value2 = "12. Ngày được tuyển dụng: " + (dr["NGAYTUYENDUNG"].ToString() == "" ? "" : DateTime.Parse(dr["NGAYTUYENDUNG"].ToString()).ToShortDateString());

                oRange = (Excel_12.Range)oSheet.Cells[21, 2];
                oRange.Value2 = "Cơ quan tuyển dụng: " + dr["COQUANTUYENDUNG"];

                oRange = (Excel_12.Range)oSheet.Cells[22, 1];
                oRange.Value2 = "13. Ngày vào cơ quan hiện đang công tác: " + (dr["NGAYVAOCOQUAN"].ToString() == "" ? "" : DateTime.Parse(dr["NGAYVAOCOQUAN"].ToString()).ToShortDateString());

                oRange = (Excel_12.Range)oSheet.Cells[23, 1];
                oRange.Value2 = "14. Ngày tham gia cách mạng: " + (dr["NGAYTGCM"].ToString() == "" ? "" : DateTime.Parse(dr["NGAYTGCM"].ToString()).ToShortDateString());

                oRange = (Excel_12.Range)oSheet.Cells[24, 1];
                oRange.Value2 = "15. Ngày vào Đảng Cộng sản Việt Nam: " + (dr["NGAYKETNAP"].ToString() == "" ? "" : DateTime.Parse(dr["NGAYKETNAP"].ToString()).ToShortDateString());

                oRange = (Excel_12.Range)oSheet.Cells[25, 1];
                oRange.Value2 = "16. Ngày chính thức: " + (dr["NGAYCHINHTHUC"].ToString() == "" ? "" : DateTime.Parse(dr["NGAYCHINHTHUC"].ToString()).ToShortDateString());

                oRange = (Excel_12.Range)oSheet.Cells[26, 1];
                oRange.Value2 = "17. Ngày tham gia các tổ chức chính trị, xã hội: " + (dr["NGAYTGTCCTXH"].ToString() == "" ? "" : DateTime.Parse(dr["NGAYTGTCCTXH"].ToString()).ToShortDateString());

                oRange = (Excel_12.Range)oSheet.Cells[27, 1];
                oRange.Value2 = "18. Ngày nhập ngũ: " + (dr["NGAYNHAPNGU"].ToString() == "" ? "" : DateTime.Parse(dr["NGAYNHAPNGU"].ToString()).ToShortDateString());

                oRange = (Excel_12.Range)oSheet.Cells[27, 4];
                oRange.Value2 = "Ngày xuất ngũ " + (dr["NGAYXUATNGU"].ToString() == "" ? "" : DateTime.Parse(dr["NGAYXUATNGU"].ToString()).ToShortDateString());

                oRange = (Excel_12.Range)oSheet.Cells[28, 2];
                oRange.Value2 = "Quân hàm, chức vụ cao nhất: " + dr["QUANHAMCHUCVUCN"];

                oRange = (Excel_12.Range)oSheet.Cells[28, 7];
                oRange.Value2 = "Năm: " + dr["NAMQHCV"];

                oRange = (Excel_12.Range)oSheet.Cells[29, 1];
                oRange.Value2 = "19. Trình độ học vấn: " + dr["hocvan"];

                oRange = (Excel_12.Range)oSheet.Cells[30, 1];
                oRange.Value2 = "20. Trình độ chuyên môn (Cao đẳng, đại học, thạc sĩ): " + dr["trinhdochuyenmon"];

                oRange = (Excel_12.Range)oSheet.Cells[31, 1];
                oRange.Value2 = "21. Học hàm, học vị cao nhất: " + dr["hocham"];

                oRange = (Excel_12.Range)oSheet.Cells[32, 1];
                oRange.Value2 = "22. Trình độ lý luận chính trị: " + dr["chinhtri"];

                oRange = (Excel_12.Range)oSheet.Cells[33, 1];
                oRange.Value2 = "23. Trình độ ngoại ngữ: " + dr["NGOAINGU"];

                oRange = (Excel_12.Range)oSheet.Cells[34, 1];
                oRange.Value2 = "24. Trình độ tin học: " + dr["TINHOC"];

                oRange = (Excel_12.Range)oSheet.Cells[35, 1];
                oRange.Value2 = "25. Công tác chính đang làm: " + dr["CONGTACCHINH"];

                oRange = (Excel_12.Range)oSheet.Cells[36, 1];
                oRange.Value2 = "26. Ngạch công chức: " + dr["ten_ngach"] + " Mã số: " + dr["MASO"]
                    + " Bậc lương: " + dr["ten_bac"] + " Hệ số lương: " + dr["HESO"] + " xếp ngày: " + (dr["NAMXEPLUONG"].ToString() == "" ? "" : DateTime.Parse(dr["NAMXEPLUONG"].ToString()).ToShortDateString());

                oRange = (Excel_12.Range)oSheet.Cells[37, 1];
                oRange.Value2 = "27. Danh hiệu được phong: " + dr["DanhHieu"] + "       năm: " + dr["NAMDANHHIEU"];

                oRange = (Excel_12.Range)oSheet.Cells[38, 1];
                oRange.Value2 = "28. Sở trường công tác: " + dr["SOTRUONGCT"] + " Công việc đã làm lâu nhất: " + dr["CONGVIECLAUNHAT"];


                string cell1, cell2; //cell để lưu giá trị range của các quá trình khen thưởng, kỷ luật, đào tạo, công tác
                System.Data.DataTable dbQT; //table lấy dữ liệu
                Excel_12.Range oRange1; //range tạm khi thực hiện copy định dạng các table quá trình
                Excel_12.Range oRow; //row thực hiện insert dòng mới
                //len: length cua db
                //i: index dòng thực tế trong excel
                //j: index dòng theo dữ liệu trong table của các quá trình
                int len, i, j;

                //Insert qua trinh Khen thuong
                i = 42; //vi tri bat dau chen du lieu qua trinh trong file excel template
                //reset j;
                j = 0; //index cua qua trinh

                //Lay du lieu qua trinh khen thuong
                dbQT = CCTKHENTHUONGCollection.LayQuaTrinhKhenThuongTheoID_NHANVIEN(id_nhanvien).Tables[0];
                len = dbQT.Rows.Count;

                //QUA TRINH KHEN THUONG
                if (len > 0)
                {
                    //Them du lieu khen thuong cho row hien tai (sau khi thuc hien vong lap insert thi row hien tai nay se la row cuoi cung)
                    //Cột: "Cấp quyết định"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 1];
                    oRange.Value2 = dbQT.Rows[len - 1]["TEN_CAPQD"].ToString();
                    //Cột: "Tháng, năm"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 3];
                    oRange.Value2 = dbQT.Rows[len - 1]["NAMKT"].ToString();
                    //Cột: "Hình thức khen thưởng"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 4];
                    oRange.Value2 = dbQT.Rows[len - 1]["TEN_HTKT"].ToString();
                    //Cột: "Lý do khen thưởng"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 6];
                    oRange.Value2 = dbQT.Rows[len - 1]["LYDOKT"].ToString();

                    while (j < len - 1)
                    {
                        /*
                         * Insert theo range duoc chon la Range(cell1, cell2)
                         * Chu y: sau khi insert oRange sẽ tham chiếu đến range cũ tức là range đã bị đẩy xuống khi insert
                         *        chứ không phải là Range(cell1, cell2) ban đầu
                         */
                        cell1 = "A" + (i + j).ToString();
                        cell2 = "I" + (i + j).ToString();
                        oRange = oSheet.get_Range(cell1, cell2);
                        oRow = oRange.EntireRow;
                        oRow.Insert(XlInsertShiftDirection.xlShiftDown, XlInsertFormatOrigin.xlFormatFromRightOrBelow);
                        //Lay dong vua moi duoc insert vao
                        oRange1 = oSheet.get_Range(cell1, cell2);
                        //Copy values va format cua dong cu (oRange) vao dong moi (oRange1)
                        oRange.Copy(oRange1);

                        //Cột: "Cấp quyết định"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 1];
                        oRange.Value2 = dbQT.Rows[j]["TEN_CAPQD"].ToString();
                        //Cột: "Tháng, năm"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 3];
                        oRange.Value2 = dbQT.Rows[j]["NAMKT"].ToString();
                        //Cột: "Hình thức khen thưởng"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 4];
                        oRange.Value2 = dbQT.Rows[j]["TEN_HTKT"].ToString();
                        //Cột: "Lý do khen thưởng"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 6];
                        oRange.Value2 = dbQT.Rows[j]["LYDOKT"].ToString();
                        j++;
                    }
                }
                else
                    i++;
                //len: số row của quá trình khen thưởng
                i += len;
                //reset j
                j = 0;

                //QUA TRINH KY LUAT (Tuong tu KHEN THUONG)
                //3: là khoảng cách từ dòng phân cách quá trình khen thưởng đến dòng chứa dữ liệu quá trình kỷ luật
                i += 3;
                
                //Lay du lieu qua trinh ky luat
                dbQT = CCTKYLUATCollection.LayQuaTrinhKyLuatTheoID_NHANVIEN(id_nhanvien).Tables[0];
                len = dbQT.Rows.Count;

                if (len > 0)
                {
                    //Cột: "Cấp quyết định"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 1];
                    oRange.Value2 = dbQT.Rows[len - 1]["TEN_CAPQD"].ToString();
                    //Cột: "Tháng, năm"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 3];
                    oRange.Value2 = dbQT.Rows[len - 1]["NAMKL"].ToString();
                    //Cột: "Hình thức kỷ luật"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 4];
                    oRange.Value2 = dbQT.Rows[len - 1]["TEN_HTKL"].ToString();
                    //Cột: "Lý do kỷ luật"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 6];
                    oRange.Value2 = dbQT.Rows[len - 1]["LYDOKL"].ToString();

                    while (j < len - 1)
                    {
                        cell1 = "A" + (i + j).ToString();
                        cell2 = "I" + (i + j).ToString();
                        oRange = oSheet.get_Range(cell1, cell2);
                        oRow = oRange.EntireRow;
                        oRow.Insert(XlInsertShiftDirection.xlShiftDown, XlInsertFormatOrigin.xlFormatFromRightOrBelow);
                        //Lay dong vua moi duoc insert vao
                        oRange1 = oSheet.get_Range(cell1, cell2);
                        //Copy values va format cua dong cu (oRange) vao dong moi (oRange1)
                        oRange.Copy(oRange1);

                        //Cột: "Cấp quyết định"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 1];
                        oRange.Value2 = dbQT.Rows[j]["TEN_CAPQD"].ToString();
                        //Cột: "Tháng, năm"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 3];
                        oRange.Value2 = dbQT.Rows[j]["NAMKL"].ToString();
                        //Cột: "Hình thức kỷ luật"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 4];
                        oRange.Value2 = dbQT.Rows[j]["TEN_HTKL"].ToString();
                        //Cột: "Lý do kỷ luật"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 6];
                        oRange.Value2 = dbQT.Rows[j]["LYDOKL"].ToString();
                        j++;
                    }
                }
                else
                    i++;
                //len: số row của quá trình kỷ luật
                i += len;
                //reset j
                j = 0;

                //Insert cac thuoc tinh con lai
                i += 1;
                oRange = (Excel_12.Range)oSheet.Cells[i, 1];
                oRange.Value2 = "31. Tình trạng sức khỏe: " + dr["SUCKHOE"] + " Cao: " + dr["CHIEUCAO"] + " Cân nặng: " + dr["CANNANG"] + " kg, nhóm máu: " + dr["NHOMMAU"];
                i++;

                oRange = (Excel_12.Range)oSheet.Cells[i, 1];
                oRange.Value2 = "32. Số chứng minh thư nhân dân: " + dr["CMND"] + " cấp ngày: " + (dr["NGAYCAP"].ToString() == "" ? "" : DateTime.Parse(dr["NGAYCAP"].ToString()).ToShortDateString());
                i++;

                oRange = (Excel_12.Range)oSheet.Cells[i, 2];
                oRange.Value2 = "Cơ quan cấp: " + dr["COQUANCAP"];
                i++;

                oRange = (Excel_12.Range)oSheet.Cells[i, 1];
                oRange.Value2 = "33. Thương binh loại: " + dr["THUONGBINH"];
                i++;

                oRange = (Excel_12.Range)oSheet.Cells[i, 2];
                oRange.Value2 = "Gia đình có công cách mạng:";
                i++;

                //QUA TRINH DAO TAO
                i += 3;

                dbQT = CCTQTDTCollection.LayQuaTrinhTheoID_NHANVIEN(id_nhanvien).Tables[0];
                len = dbQT.Rows.Count;

                if (len > 0)
                {
                    //Cột: "Tên trường"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 1];
                    oRange.Value2 = dbQT.Rows[len - 1]["TRUONG"].ToString();
                    //Cột: "Ngành học hoặc tên lớp học"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 3];
                    oRange.Value2 = dbQT.Rows[len - 1]["CHUYENNGANH"].ToString();
                    //Cột: "Thời gian học"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 4];
                    oRange.Value2 = dbQT.Rows[len - 1]["TUNAM"].ToString() + "-" + dbQT.Rows[len - 1]["DENNAM"].ToString();
                    //Cột: "Hình thức học"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 5];
                    oRange.Value2 = dbQT.Rows[len - 1]["HDT"].ToString();
                    //Cột: "Văn bằng, chứng chỉ"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 6];
                    oRange.Value2 = dbQT.Rows[len - 1]["VANBANG"].ToString();

                    while (j < len - 1)
                    {
                        cell1 = "A" + (i + j).ToString();
                        cell2 = "I" + (i + j).ToString();
                        oRange = oSheet.get_Range(cell1, cell2);
                        oRow = oRange.EntireRow;
                        oRow.Insert(XlInsertShiftDirection.xlShiftDown, XlInsertFormatOrigin.xlFormatFromRightOrBelow);
                        //Lay dong vua moi duoc insert vao
                        oRange1 = oSheet.get_Range(cell1, cell2);
                        //Copy values va format cua dong cu (oRange) vao dong moi (oRange1)
                        oRange.Copy(oRange1);

                        //Cột: "Tên trường"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 1];
                        oRange.Value2 = dbQT.Rows[j]["TRUONG"].ToString();
                        //Cột: "Ngành học hoặc tên lớp học"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 3];
                        oRange.Value2 = dbQT.Rows[j]["CHUYENNGANH"].ToString();
                        //Cột: "Thời gian học"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 4];
                        oRange.Value2 = dbQT.Rows[j]["TUNAM"].ToString() + "-" + dbQT.Rows[j]["DENNAM"].ToString();
                        //Cột: "Hình thức học"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 5];
                        oRange.Value2 = dbQT.Rows[j]["HDT"].ToString();
                        //Cột: "Văn bằng, chứng chỉ"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 6];
                        oRange.Value2 = dbQT.Rows[j]["VANBANG"].ToString();

                        j++;
                    }
                }
                else
                    i++;

                i += len;
                //reset j
                j = 0;

                //QUA TRINH CONG TAC
                i += 3;

                dbQT = CCTQTCTCollection.LayQuaTrinhTheoID_NHANVIEN(id_nhanvien).Tables[0];
                len = dbQT.Rows.Count;

                if (len > 0)
                {
                    //Cột: "Từ tháng, năm đến tháng, năm"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 1];
                    oRange.Value2 = dbQT.Rows[len - 1]["TUNAM"].ToString() + "-" + dbQT.Rows[len - 1]["DENNAM"].ToString();
                    //Cột: "Chức danh, chức vụ, đơn vị công tác (đảng, chính quyền, đoàn thể)"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 3];
                    oRange.Value2 = dbQT.Rows[len - 1]["NOIDUNG"].ToString();

                    while (j < len - 1)
                    {
                        cell1 = "A" + (i + j).ToString();
                        cell2 = "I" + (i + j).ToString();
                        oRange = oSheet.get_Range(cell1, cell2);
                        oRow = oRange.EntireRow;
                        oRow.Insert(XlInsertShiftDirection.xlShiftDown, XlInsertFormatOrigin.xlFormatFromRightOrBelow);
                        //Lay dong vua moi duoc insert vao
                        oRange1 = oSheet.get_Range(cell1, cell2);
                        //Copy values va format cua dong cu (oRange) vao dong moi (oRange1)
                        oRange.Copy(oRange1);

                        //Cột: "Từ tháng, năm đến tháng, năm"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 1];
                        oRange.Value2 = dbQT.Rows[j]["TUNAM"].ToString() + "-" + dbQT.Rows[j]["DENNAM"].ToString();
                        //Cột: "Chức danh, chức vụ, đơn vị công tác (đảng, chính quyền, đoàn thể)"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 3];
                        oRange.Value2 = dbQT.Rows[j]["NOIDUNG"].ToString();

                        j++;
                    }
                }
                else
                    i++;

                i += len;
                //reset j
                j = 0;

                //QUAN HE GIA DINH
                //BEN NOI
                i += 4;

                dbQT = CCTQHGDCollection.LayQHGDTheoBanThanTheoID_NHANVIEN(id_nhanvien).Tables[0];
                len = dbQT.Rows.Count;

                if (len > 0)
                {
                    //Cột: "Quan hệ"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 1];
                    oRange.Value2 = dbQT.Rows[len - 1]["QUANHE"].ToString();
                    //Cột: "Họ tên"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 2];
                    oRange.Value2 = dbQT.Rows[len - 1]["HOTEN"].ToString();
                    //Cột: "Năm sinh"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 4];
                    oRange.Value2 = dbQT.Rows[len - 1]["NAMSINH"].ToString();
                    //Cột: "Quê quán, nghề nghiệp, chức danh, chức vụ, đơn vị công tác, học tập, nơi ở (trong, ngoài nước), thành viên các tổ chức chính trị, xã hội"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 5];
                    oRange.Value2 = dbQT.Rows[len - 1]["NOIDUNG"].ToString();


                    while (j < len - 1)
                    {
                        cell1 = "A" + (i + j).ToString();
                        cell2 = "I" + (i + j).ToString();
                        oRange = oSheet.get_Range(cell1, cell2);
                        oRow = oRange.EntireRow;
                        oRow.Insert(XlInsertShiftDirection.xlShiftDown, XlInsertFormatOrigin.xlFormatFromRightOrBelow);
                        //Lay dong vua moi duoc insert vao
                        oRange1 = oSheet.get_Range(cell1, cell2);
                        //Copy values va format cua dong cu (oRange) vao dong moi (oRange1)
                        oRange.Copy(oRange1);

                        //Cột: "Quan hệ"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 1];
                        oRange.Value2 = dbQT.Rows[j]["QUANHE"].ToString();
                        //Cột: "Họ tên"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 2];
                        oRange.Value2 = dbQT.Rows[j]["HOTEN"].ToString();
                        //Cột: "Năm sinh"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 4];
                        oRange.Value2 = dbQT.Rows[j]["NAMSINH"].ToString();
                        //Cột: "Quê quán, nghề nghiệp, chức danh, chức vụ, đơn vị công tác, học tập, nơi ở (trong, ngoài nước), thành viên các tổ chức chính trị, xã hội"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 5];
                        oRange.Value2 = dbQT.Rows[j]["NOIDUNG"].ToString();

                        j++;
                    }
                }
                else
                    i++;

                i += len;
                //reset j
                j = 0;

                //QUAN HE GIA DINH
                //BEN NGOAI
                i += 3;

                dbQT = CCTQHGDCollection.LayQHGDTheoVoChongTheoID_NHANVIEN(id_nhanvien).Tables[0];
                len = dbQT.Rows.Count;

                if (len > 0)
                {
                    //Cột: "Quan hệ"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 1];
                    oRange.Value2 = dbQT.Rows[len - 1]["QUANHE"].ToString();
                    //Cột: "Họ tên"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 2];
                    oRange.Value2 = dbQT.Rows[len - 1]["HOTEN"].ToString();
                    //Cột: "Năm sinh"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 4];
                    oRange.Value2 = dbQT.Rows[len - 1]["NAMSINH"].ToString();
                    //Cột: "Quê quán, nghề nghiệp, chức danh, chức vụ, đơn vị công tác, học tập, nơi ở (trong, ngoài nước), thành viên các tổ chức chính trị, xã hội"
                    oRange = (Excel_12.Range)oSheet.Cells[i, 5];
                    oRange.Value2 = dbQT.Rows[len - 1]["NOIDUNG"].ToString();

                    while (j < len - 1)
                    {
                        cell1 = "A" + (i + j).ToString();
                        cell2 = "I" + (i + j).ToString();
                        oRange = oSheet.get_Range(cell1, cell2);
                        oRow = oRange.EntireRow;
                        oRow.Insert(XlInsertShiftDirection.xlShiftDown, XlInsertFormatOrigin.xlFormatFromRightOrBelow);
                        //Lay dong vua moi duoc insert vao
                        oRange1 = oSheet.get_Range(cell1, cell2);
                        //Copy values va format cua dong cu (oRange) vao dong moi (oRange1)
                        oRange.Copy(oRange1);

                        //Cột: "Quan hệ"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 1];
                        oRange.Value2 = dbQT.Rows[j]["QUANHE"].ToString();
                        //Cột: "Họ tên"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 2];
                        oRange.Value2 = dbQT.Rows[j]["HOTEN"].ToString();
                        //Cột: "Năm sinh"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 4];
                        oRange.Value2 = dbQT.Rows[j]["NAMSINH"].ToString();
                        //Cột: "Quê quán, nghề nghiệp, chức danh, chức vụ, đơn vị công tác, học tập, nơi ở (trong, ngoài nước), thành viên các tổ chức chính trị, xã hội"
                        oRange = (Excel_12.Range)oSheet.Cells[i + j, 5];
                        oRange.Value2 = dbQT.Rows[j]["NOIDUNG"].ToString();

                        j++;
                    }
                }
                else
                    i++;
                
                i += len;
                //reset j
                j = 0;


            }
            catch (COMException ex)
            {
                MessageBox.Show(ex.ToString());
                //// Make Excel_12 visible to the user.
                //oExcel_12.Visible = true;
                //// Release the variables.
                ////oBook.Close(false, oMissing, oMissing);
                //oBook = null;

                ////oExcel_12.Quit();
                //oExcel_12 = null;

                //// Collect garbage.
                //GC.Collect();
            }
            

            // Release the variables.
            oBook.Saved = true;
            //oBook.Close(true, oMissing, oMissing);
            //oBook = null;

            //oExcel_12.Quit();
            //oExcel_12 = null;

            // Collect garbage.
            GC.Collect();
        }
    }
}
